001 /** 002 * Created by IntelliJ IDEA. 003 * User: Wei Wang 004 * Date: Nov 28, 2002 005 * Time: 11:50:25 PM 006 */ 007 008 package EVolve.visualization.XYViz.RefRefViz; 009 010 import EVolve.visualization.*; 011 import EVolve.visualization.Dimension; 012 import EVolve.visualization.VizFactory.VisualizationFactory; 013 import EVolve.data.*; 014 import EVolve.util.predefinedutils.VizInfo; 015 import EVolve.util.painters.CorrelationPainter; 016 import EVolve.exceptions.VizInfoCreateException; 017 import EVolve.Scene; 018 019 import javax.swing.*; 020 import java.util.HashMap; 021 import java.awt.event.*; 022 023 public class CorrelationViz extends ReferenceReferenceVisualization{ 024 private int valueMax; 025 private JMenuItem itemSelectX, itemSelectY, itemSelectAllX, itemSelectAllY; 026 private static JMenuItem selectionMenu[] = null; 027 028 public Dimension[] createDimension() { 029 Dimension[] returnVal = new Dimension[3]; 030 Dimension[] temp = super.createDimension(); 031 032 zAxis = new ValueDimension(); 033 034 returnVal[0] = temp[0]; 035 returnVal[1] = temp[1]; 036 returnVal[2] = zAxis; 037 038 return returnVal; 039 } 040 041 public void preVisualize() { 042 super.preVisualize(); 043 valueMax = 0; 044 image = new AutoImage(); 045 value = new int[xAxis.getMaxEntityNumber()][yAxis.getMaxEntityNumber()]; 046 for (int i = 0; i < value.length; i++) { 047 for (int j = 0; j < value[i].length; j++) { 048 value[i][j] = 0; 049 } 050 } 051 installPainter(); 052 } 053 054 public void receiveElement(Element element) { 055 if (element.isOptional()) return; 056 057 value[(int)xAxis.getField(element)][(int)yAxis.getField(element)] += zAxis.getField(element); 058 059 if (value[(int)xAxis.getField(element)][(int)yAxis.getField(element)] > valueMax) { 060 valueMax = value[(int)xAxis.getField(element)][(int)yAxis.getField(element)]; 061 } 062 } 063 064 public void visualize() { 065 painter.paint(image,-1,-1,valueMax); 066 sort(); 067 } 068 069 public HashMap getCurrentConfigure() { 070 try { 071 HashMap configure = super.getCurrentConfigure(); 072 073 VizInfo vizInfo = new VizInfo(); 074 vizInfo.setFactory((VisualizationFactory)configure.get("Factory")); 075 vizInfo.setSubject((ElementDefinition)configure.get("Subject")); 076 077 String[] dimensionDefs = new String[3]; 078 dimensionDefs[0] = xAxis.getName() ; 079 dimensionDefs[1] = yAxis.getName() ; 080 dimensionDefs[2] = zAxis.getName() ; 081 configure.put("Dimension",vizInfo.createDimension(dimensionDefs)); 082 083 return configure; 084 } catch (VizInfoCreateException e) { 085 Scene.showErrorMessage(e.getMessage()); 086 } 087 return null; 088 } 089 090 protected void updateConfiguration() { 091 info[0] = xAxis.getName() +": "; 092 info[1] = " " + yAxis.getName() +": "; 093 info[2] = " Correlation: "; 094 095 super.updateConfiguration(); 096 } 097 098 public long getxMax() { 099 return xAxis.getEntityNumber(); 100 } 101 102 protected void changeOrientation() { 103 int newValue[][] = new int[value[0].length][value.length]; 104 for (int i = 0; i < newValue.length; i++) { 105 for (int j = 0; j < newValue[i].length ; j++) { 106 newValue[i][j] = value[newValue[i].length - j - 1][newValue.length - i - 1]; 107 } 108 } 109 value = newValue; 110 super.changeOrientation(); 111 } 112 113 protected void installPainter() { 114 painter = new CorrelationPainter(value); 115 } 116 117 public JMenuItem[] createSelectionMenuItem() { 118 if (selectionMenu != null) return selectionMenu; 119 120 itemSelectX = new JCheckBoxMenuItem("Occurred Entities on X Axis"); 121 itemSelectX.setMnemonic(KeyEvent.VK_X); 122 itemSelectX.addActionListener(new ActionListener() { 123 public void actionPerformed(ActionEvent e) { 124 boolean selected = itemSelectX.isSelected(); 125 SELECT_OPTION = switchOption(selected, SELECT_OPTION, SELECT_X_AXIS); 126 127 if (itemSelectAllX.isSelected() && selected) { 128 itemSelectAllX.setSelected(false); 129 SELECT_OPTION = switchOption(false,SELECT_OPTION,SELECT_ALL_X_AXIS); 130 } 131 } 132 }); 133 itemSelectX.setSelected(false); 134 135 itemSelectAllX = new JCheckBoxMenuItem("All Entities on X Axis"); 136 itemSelectAllX.setMnemonic(KeyEvent.VK_A); 137 itemSelectAllX.addActionListener(new ActionListener() { 138 public void actionPerformed(ActionEvent e) { 139 boolean selected = itemSelectAllX.isSelected(); 140 SELECT_OPTION = switchOption(selected,SELECT_OPTION,SELECT_ALL_X_AXIS); 141 142 if (itemSelectX.isSelected() && selected) { 143 itemSelectX.setSelected(false); 144 SELECT_OPTION = switchOption(false,SELECT_OPTION,SELECT_X_AXIS); 145 } 146 } 147 }); 148 itemSelectAllX.setSelected(true); 149 150 itemSelectY = new JCheckBoxMenuItem("Occurred Entities on Y Axis"); 151 itemSelectY.setMnemonic(KeyEvent.VK_Y); 152 itemSelectY.addActionListener(new ActionListener() { 153 public void actionPerformed(ActionEvent e) { 154 boolean selected = itemSelectY.isSelected(); 155 SELECT_OPTION = switchOption(selected, SELECT_OPTION, SELECT_Y_AXIS); 156 157 if (itemSelectAllY.isSelected() && selected) { 158 itemSelectAllY.setSelected(false); 159 SELECT_OPTION = switchOption(false,SELECT_OPTION, SELECT_ALL_Y_AXIS); 160 } 161 } 162 }); 163 itemSelectY.setSelected(false); 164 165 itemSelectAllY = new JCheckBoxMenuItem("All Entities on Y Axis"); 166 itemSelectAllY.setMnemonic(KeyEvent.VK_E); 167 itemSelectAllY.addActionListener(new ActionListener() { 168 public void actionPerformed(ActionEvent e) { 169 boolean selected = itemSelectAllY.isSelected(); 170 SELECT_OPTION = switchOption(selected,SELECT_OPTION,SELECT_ALL_Y_AXIS); 171 172 if (itemSelectY.isSelected() && selected) { 173 itemSelectY.setSelected(false); 174 SELECT_OPTION = switchOption(false,SELECT_OPTION,SELECT_Y_AXIS); 175 } 176 } 177 }); 178 itemSelectAllY.setSelected(true); 179 180 selectionMenu = new JMenuItem[4]; 181 selectionMenu[0] = itemSelectX; 182 selectionMenu[1] = itemSelectAllX; 183 selectionMenu[2] = itemSelectY; 184 selectionMenu[3] = itemSelectAllY; 185 186 return selectionMenu; 187 } 188 189 190 }